package com.example.gif_recycle_view_probe;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.viewpager2.widget.ViewPager2;

import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ViewPager2 viewPager2;
    private List<Integer> gifList;
    private GifAdapter gifAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });


        viewPager2 = findViewById(R.id.viewPager);
        gifList = Arrays.asList(R.drawable.saobi, R.drawable.cutedog, R.drawable.nailong);

        gifAdapter = new GifAdapter(gifList);

        viewPager2.setAdapter(gifAdapter);

        // BUG: java.lang.IllegalStateException: Pages must fill the whole ViewPager2 (use match_parent)
        // ref link:https://www.aigei.com/s?q=gif
        viewPager2.postDelayed(new Runnable() {
            @Override
            public void run() {
                int currentItem = viewPager2.getCurrentItem();
                int nextItem = (currentItem + 1) % gifList.size();
                viewPager2.setCurrentItem(nextItem, true);
                viewPager2.postDelayed(this, 3000);
            }
        }, 3000);

    }
}
/*
这个错误信息表明在使用 ViewPager2 时，页面（即 ViewPager2 中的子视图）没有填满整个 ViewPager2 容器。具体来说，页面的宽度或高度没有设置为 match_parent，导致 ViewPager2 无法正确地展示和管理页面。
解决方法
确保页面的布局参数设置为 match_parent
你需要确保 ViewPager2 中的每个页面（通常是 Fragment 或 View）的布局参数设置为 match_parent，这样页面才能填满整个 ViewPager2 容器。
例如，如果你使用的是 Fragment，确保 Fragment 的布局文件中的根视图的宽度和高度都设置为 match_parent：
xml复制
<!-- res/layout/fragment_page.xml -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 页面内容 -->

</FrameLayout>
如果你使用的是 View，同样需要确保其布局参数设置为 match_parent：
java复制
View pageView = LayoutInflater.from(context).inflate(R.layout.page_layout, viewPager2, false);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT,
    ViewGroup.LayoutParams.MATCH_PARENT
);
pageView.setLayoutParams(layoutParams);
检查 ViewPager2 的布局参数
确保 ViewPager2 本身的布局参数也设置为 match_parent，这样它才能正确地占据其父视图的整个空间：
xml复制
<!-- res/layout/activity_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager2"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
检查适配器中的布局参数
如果你使用的是自定义的适配器，确保在适配器中为每个页面设置正确的布局参数：
java复制
public class MyPagerAdapter extends RecyclerView.Adapter<MyPagerAdapter.MyViewHolder> {

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.page_layout, parent, false);
        view.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT
        ));
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        // 绑定数据
    }

    @Override
    public int getItemCount() {
        return 3; // 示例页面数量
    }

    static class MyViewHolder extends RecyclerView.ViewHolder {
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
        }
    }
}
总结
确保 ViewPager2 及其页面的布局参数都设置为 match_parent，这样页面才能正确地填满整个 ViewPager2 容器，避免出现 IllegalStateException 错误。
 */